关于浮点数:如何抑制Python中的科学计数法? 您所在的位置:网站首页 python float转string保留小数 关于浮点数:如何抑制Python中的科学计数法?

关于浮点数:如何抑制Python中的科学计数法?

2024-01-31 20:30| 来源: 网络整理| 查看: 265

这是我的代码:

123x = 1.0 y = 100000.0     print x/y

我的商显示为1.00000e-05

有什么方法可以抑制科学计数法并使其显示为 0.00001? 我将使用结果作为字符串。

相关讨论 1/10000 = 0.0001 = 1.00000e-04 @AA,假设它是赋值语句中的错字,我已经改正了。

使用较新的版本''.format(还要记住指定要显示在.之后的位数,这取决于浮点数是多少)。请参阅以下示例:

123>>> a = -7.1855143557448603e-17 >>> '{:f}'.format(a) '-0.000000'

如上图所示,默认值为6位!这对我们的案例没有帮助,因此我们可以使用类似以下的内容:

12>>> '{:.20f}'.format(a) '-0.00000000000000007186'

更新资料

从Python 3.6开始,可以使用新的格式化字符串文字来简化此过程,如下所示:

12>>> f'{a:.20f}' '-0.00000000000000007186' 相关讨论 如何在指定有效数字的同时执行此操作?

1'%f' % (x/y)

但是您需要自己管理精度。例如。,

1'%f' % (1/10**8)

将仅显示零。 详细信息在文档中

或对于Python 3,等效的旧格式或新样式格式

相关讨论 我知道这非常简单-非常感谢! 我建议澄清您的陈述,说"您可以自己管理精度的显示"。 实际的(Python内部)精度没有更改,就像其他语言经常这样做一样。

使用较新版本的Python(2.6和更高版本),您可以使用''.format()完成@SilentGhost建议的操作:

1'{0:f}'.format(x/y) 相关讨论 这真的是您想要的吗? 我不:>>> print({:f}.format(0.000000123)) 0.000000 @duality,您可能需要指定精度。 {0:.10f}

如果您使用的是熊猫并且想抑制所有浮标的科学计数法,则另一种选择是调整熊猫选项。

12import pandas as pd pd.options.display.float_format = '{:.2f}'.format

这是使用Cucumber上尉的答案,但有2个补充。

1)允许函数获取非科学计数法数字并按原样返回它们(因此您可以输入很多数字,其中一些数字为0.00003123与3.123e-05,并且仍然可以正常工作。

2)添加了对负数的支持。 (在原始功能中,负数最终会从-1.08904e-05变为0.0000-108904)

123456789101112131415161718192021def getExpandedScientificNotation(flt):     was_neg = False     if not ("e" in flt):         return flt     if flt.startswith('-'):         flt = flt[1:]         was_neg = True     str_vals = str(flt).split('e')     coef = float(str_vals[0])     exp = int(str_vals[1])     return_val = ''     if int(exp) > 0:         return_val += str(coef).replace('.', '')         return_val += ''.join(['0' for _ in range(0, abs(exp - len(str(coef).split('.')[1])))])     elif int(exp) 0:         return_val += str(coef).replace('.', '')         return_val += ''.join(['0' for _ in range(0, abs(exp - len(str(coef).split('.')[1])))])     elif int(exp)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有